#include <stdio.h>

int main() {
    int n, i, j;
    printf("请输入杨辉三角形的行数：");
    scanf("%d", &n);

    // 定义数组存储上一行数据
    int prev_row[n];
    prev_row[0] = 1;  // 第0行只有一个元素1

    for (i = 0; i < n; i++) {
        // 打印空格，使三角形居中
        for (j = 0; j < n - i - 1; j++) {
            printf(" ");
        }

        // 打印当前行（第i行）
        int curr_row[i + 1];
        curr_row[0] = 1;          // 每行第一个元素为 1
        curr_row[i] = 1;          // 每行最后一个元素为 1
        for (j = 1; j < i; j++) {
            // 中间元素 = 上一行相邻两个元素之和
            curr_row[j] = prev_row[j - 1] + prev_row[j];
        }

        // 输出当前行
        for (j = 0; j <= i; j++) {
            printf("%d ", curr_row[j]);
            prev_row[j] = curr_row[j];  // 更新上一行数据
        }

        printf("\n");
    }

    return 0;
}